// #include "simd_thl.h"
// //#include <sys/cdefs.h>
// #define noreorder(x) __builtin_protect_v4df(x)
// __attribute__((always_inline)) __v4df v_invsqrt(__v4df x) {
//   __v4di magic = set1_v4di(0x5fe6ec85e7de30daL);
//   __v4di xlong = __builtin_cast_v4df_v4di(x);
//   __v4df y = __builtin_cast_v4di_v4df(magic - __builtin_cast_v4df_v4di(__builtin_sw_vcpysd(set1_v4df(0.0), __builtin_cast_v4di_v4df(xlong))));
//   __v4df xhalf = x * set1_v4df(0.5);
    
//   y = noreorder(y * 1.5) - noreorder(xhalf*y)*noreorder(y*y);
//   y = noreorder(y * 1.5) - noreorder(xhalf*y)*noreorder(y*y);
//   y = noreorder(y * 1.5) - noreorder(xhalf*y)*noreorder(y*y);
//   y = noreorder(y * 1.5) - noreorder(xhalf*y)*noreorder(y*y);
//   // if (_MYID == 0){
//   //   printf("%f %f %f\n", __builtin_sw_vextfd(x,1), __builtin_sw_vextfd(y,1), __builtin_sw_vextfd(xhalf,1));
//   // }

//   return y;
// }

double add(){
  double a[256], b[256], c[256];
  asm volatile("memb\n\t":"=m"(a), "=m"(b)::"memory");
  for (int i = 0; i < 256; i ++){
    __builtin_force_unroll(8);
    //*(__v4df*)(c + i) = v_invsqrt(*(__v4df*)(a + i));
    c[i] = a[i] + b[i];
  }
  double ret;
  asm volatile("memb\n\t": "=r"(ret):"m"(c):"memory");
  return ret;
}
